package com.utaedang.jesseclub.utils;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.List;

import net.htmlparser.jericho.Element;
import net.htmlparser.jericho.FormControl;
import net.htmlparser.jericho.HTMLElementName;
import net.htmlparser.jericho.Source;

public class HTMLpaserTest {
	private static void process(String urlStr) throws IOException {

		//동신대학교 권장도서 100선
		urlStr = "http://lib1.dsu.ac.kr/DLSearch/DLLocal/LOC/HTML/dsu/EncourageBook.html?MainMenuNo=275&InformYN=N";
				
	     // URL로 부터 소스클래스 작성
	     //Source source = new Source(new FileInputStream(new File(urlStr)));
		URL nURL;
		nURL = new URL(urlStr);
		InputStream html = nURL.openStream();
		//가져오는 HTML의 인코딩형식
		Source source = new Source(new InputStreamReader(html, "EUC-KR"));
	     //Source source = new Source(new URL(urlStr));


	        //A 태그를 습득해본다

	        List<Element> atags = source.getAllElements(HTMLElementName.A);
	        for (int i = 0; i < atags.size(); i++) {
	            Element e = (Element) atags.get(i);
	            // href속성을 습득
	            String href = e.getAttributeValue("href");
	            // extractText습득
	            String txt = e.getContent().toString();

	 

	            //System.out.println(String.format("href=%s, extractText=%s", href,txt));
	            System.out.println("href:"+href);
	        }

	   
	        // 모든 form 콘트롤러 태그를 습득
	        List<FormControl> controls = source.getFormControls();
	        for (int i = 0; i < controls.size(); i++) {
	            FormControl c = controls.get(i);
	            // name속성 습득
	            String name = (String) c.getAttributesMap().get("name");
	            // type속성 습득
	            String type = (String) c.getAttributesMap().get("type");
	            // value속성 습득
	            String value = (String) c.getAttributesMap().get("value");

	 

	            System.out.println(String.format("name=%s, type=%s, value=%s",
	                    name, type, value));
	        }

	      
	        // table로 부터 특정셀을 습득
	        // 여기서는 0번째의 테이블의 0번째의 tr의 0번째의 TD의 extractText 습득
	 
	        // 0번째의 테이블 습득
	        Element table = (Element) source.getAllElements(HTMLElementName.TABLE)
	                .get(0);
	        // 0번째의 TR습득
	        Element tr = (Element) table.getAllElements(HTMLElementName.TR).get(0);
	        // 0번째의 TD습득
	        Element td = (Element) tr.getAllElements(HTMLElementName.TD).get(0);
	 
	        System.out.println("extractText(table:0, tr:0, td:0)="
	                + td.toString());

	       

	        // id속성을 특정해서 element를 습득
	        Element e = (Element) source.getElementById("hogeId");
	   
	        System.out.println("hogeId.extractText=" + e.toString());
	    }
	
	public static void main(String[] args){
		try {
			process("http://www.google.co.kr/");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
